package br.com.pnfp.web.control.actions.cadastros;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import br.com.pnfp.web.control.actions.DefaultAction;
import br.com.pnfp.web.control.forms.cadastros.CadastroCidadeForm;
import br.com.pnfp.web.model.enums.UF;
import br.com.pnfp.web.model.vo.Cidade;

public class CadastroCidadeAction extends DefaultAction {
	
	private static final Logger logger = Logger.getLogger(CadastroCidadeAction.class); 
	
	public ActionForward iniciar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		return mapping.findForward("body");
	}
	
	public ActionForward consultar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCidadeForm cidadeForm = (CadastroCidadeForm) form;
		consultar(cidadeForm, request);
		
		return mapping.findForward("body");
	}
	
	public ActionForward incluir(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCidadeForm cidadeForm = (CadastroCidadeForm) form;
		Cidade vo = new Cidade();
		vo.setNome(cidadeForm.getNome());
		vo.setUf(UF.valueOf(cidadeForm.getUf()));
		getCidadeDAO().incluir(vo);
		
		return null;
	}	
	
	public ActionForward alterarIniciar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCidadeForm cidadeForm = (CadastroCidadeForm) form;
		List<Cidade> lista = getCidadeDAO().consultar(new Cidade(cidadeForm.getIdSelecionado()));
		 
		Cidade vo = lista.get(0);		
		printJsonObjectToStream(vo, response);
		
		return null;
	}	
	
	public ActionForward alterar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCidadeForm cidadeForm = (CadastroCidadeForm) form;
		Cidade vo = new Cidade();
		vo.setCodigo(cidadeForm.getIdSelecionado());
		vo.setNome(cidadeForm.getNome());
		vo.setUf(UF.valueOf(cidadeForm.getUf()));
		
		getCidadeDAO().alterar(vo);
		
		return null;
	}
	
	public ActionForward carregarCombo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		CadastroCidadeForm cidadeForm = (CadastroCidadeForm) form;
		Cidade vo = new Cidade();
		vo.setUf(UF.valueOf(cidadeForm.getUf()));		
		List<Cidade> cidades = getCidadeDAO().consultar(vo);
		printJsonObjectToStream(cidades, response);
		
		return null;
	}
	
	
	
	
	private void consultar(CadastroCidadeForm cidadeForm, HttpServletRequest request) {
		Cidade vo = new Cidade();
		vo.setNome(cidadeForm.getNomeConsultar());
		if(cidadeForm.getUfConsultar() != null)
			vo.setUf(UF.valueOf(cidadeForm.getUfConsultar()));		
		
		List<Cidade> listaResultado = getCidadeDAO().consultar(vo);
		request.setAttribute("listaResultado", listaResultado);
	}
}
